#include "../header.h"

//地址结构体的使用
// struct sockaddr :  函数使用的地址结构体  bind 
// struct sockaddr_in : 实际使用地址结构体

int main(int argc, char const *argv[])
{
    if(argc   < 3)
    {
        perror("usage:./a.out + ip + port");
    }

    //1.从命令行传递  ip + port 
    struct sockaddr_in saddr = {0};
    //IPV4协议族
    saddr.sin_family = AF_INET;
    //端口号 - 应用的身份证 - 网络字节序   10000 
    //命令行参数是字符串 - 主机数值 - 网络字节序数值 
    saddr.sin_port = htons(atoi(argv[2]));
    //IP：计算机的身份证 - inet_addr:把主机字符串 - 网络字节序
    saddr.sin_addr.s_addr = inet_addr(argv[1]);

    //------------------------------------------------//
    //数据传输
    //把数据转换回来。
    int host_order = ntohs(saddr.sin_port);
    printf("端口号:%d\n",host_order);

    //把ip转换回来
    char ipk[16] = "";
    inet_ntop(AF_INET,&saddr.sin_addr.s_addr,ipk,sizeof(ipk));
    printf("转换结果是ipk:%s\n",ipk);

    return 0;
}
